In modern computer systems, memory for executing program code is allocated on RAM storage mediums. RAM storage mediums are volatile computer data storage mediums that generally have faster read/write times, faster bus speeds, and configurations that enable faster communication with processors of the computer system as compared to computer data storage mediums in the computer system aside from RAM storage. Namely, data storage such as solid state drives, hard disk drives, magnetic storage, optical storage, CD-ROM drives, tape drives, and the like generally have considerably slower read/write times and bus speeds as compared to RAM storage. As these other forms of data storage are generally non-volatile data storage, they are used for longer-term data storage (e.g., to non-transiently store or save information) rather than merely for temporarily storing data used in the execution of a computer program.
As modern computing applications require ever-increasing amounts of memory for execution. The current solution is to simply provide ever-increasing amounts of RAM storage to attempt to meet the demands for increased memory. However, large amounts of RAM storage can be cost prohibitive, as RAM storage is substantially more expensive than leading forms of non-volatile (e.g., non-RAM) data storage, namely hard disk drives and solid state drives. In instances in which extremely large amounts of memory are required, such as when data in the range of several TB must be loaded into memory at one time, the cost to purchase or provision computer systems having sufficient amounts of RAM storage may be prohibitive. For example, a supercomputer offering on the order of 5-10 TB of RAM storage may cost on the order of millions or tens of millions of dollars, and renting access to distributed cloud computing systems offering on the order of 5-10 TB of RAM may cost on the order of hundreds or thousands of dollars per hour. Given this cost prohibitiveness, users without vast amounts of monetary resources may be unable to implement computer applications requiring very large amounts of memory (e.g., memory requirements on the order of 5-10 TB or more).
Other known solutions for providing required amounts of memory is to utilize virtual memory solutions and/or caching solutions to temporarily move certain data off of RAM storage and onto non-volatile storage in order to free up more of the RAM storage for use by an application (e.g., for use by an application requiring very large amounts of memory). However, virtual memory solutions remain limited by (a) the amount of slot space onto which data may be temporarily moved from RAM, and (b) the total amount of RAM storage available on a device to be allocated as memory, even assuming all RAM storage is available. Thus, particularly for applications requiring very large data structures to be loaded into memory at once, virtual memory may still be an inadequate solution, and a user may still be unable to implement such an application without purchasing or provisioning extremely large amounts of RAM storage.
Accordingly, there is a need for systems, methods, and techniques of providing computer memory without the need for access to extremely large amounts of RAM storage.